Embodiments of the present invention relate generally to multimodal and/or multiple-device applications and more particularly to providing dynamic configuration and/or support for applications using multiple modes and/or devices.
Multimodal applications are applications that utilize multiple modes of operation or input/output such as presenting a Graphical User Interface (GUI), a voice interface, text, handwriting, and/or other modalities. Multi-device applications are applications that can be executed, simultaneously or not, on multiple devices of different types such as a cell phone, Personal Digital Assistant (PDA), personal computer, etc. Furthermore, an application can combine multiple modes and multiple devices to, for example, present different interfaces to different types of devices, present multiple interfaces, present multiple interfaces of certain types to only particular types of devices, etc.
Generally speaking, the execution model of multimodal and multi-device applications can be described as follows. First, a user interacts with one of the available modalities. For example, the user accesses a web page via his personal computer. Interaction events resulting from the user's interactions with this modality or device are generated by an agent for that mode or device. The interaction events are passed to a synchronization manager that handles a representation of the interaction event and determines the impact of the interaction based on the state of the application and synchronization scheme. The synchronization manager updates its internal representation of the state of the application and sends update events to registered agents or applications for each of the other modes or devices. Any interaction or change resulting from the user's interaction with the first mode or device is then performed by the agent(s) for the other modes or devices based on the update events. Therefore, changes or interactions with the application made in one mode or via one device can be propagated through the synchronization manager to the agents for the other modes or devices to update those modes or devices.
However, such a model assumes that the configuration, i.e., the devices and modalities and the agents for each, have been established and remain static. That is, the synchronization manager is hard-coded to interact with the application and the modes and devices it is able to use as well as the individual agents for each modality or device. There is no way for the manager to dynamically discover and utilize an agent for a particular modality or device based on the application and the modes or devices it may support or utilize. Rather, to add or change modalities, the application, synchronization manager, and agents must be coded or re-coded. Hence, there is a need for methods and systems that allow dynamic configuration and/or support for application using multiple modes and/or devices.